﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados.Interfaces;
using Dados.ClassesSQLServer;
using Dados.ValueObjects;
using System.ComponentModel;

namespace Negocios
{
   [DataObject]
   public class PacoteBOMetodos
    {
        private IPacote iPacoteDados;

        public PacoteBOMetodos()
        {
            iPacoteDados = new PacoteSQLServer();
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Insert,true)]
        public bool inserir(PacoteBO pBO)
        {
            PacoteVO pVO = new PacoteVO();
            pVO.Nome = pBO.Nome;
            pVO.Id = pBO.Id;
            pVO.Parcelamento = pBO.Parcelamento;
            pVO.Preco = pBO.Preco;
            pVO.Hotel = pBO.Hotel.Id;
            pVO.Destino = pBO.Destino.Id;
            pVO.Descricao = pBO.Descricao;
            pVO.DataInicio = pBO.DataInicio;
            pVO.DataFim = pBO.DataFim;

            return (iPacoteDados.Insere(pVO) == 1);

        }

        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool atualizar(PacoteBO pBO)
        {
            PacoteVO pVO = new PacoteVO();
            pVO.Nome = pBO.Nome;
            pVO.Id = pBO.Id;
            pVO.Parcelamento = pBO.Parcelamento;
            pVO.Preco = pBO.Preco;
            pVO.Hotel = pBO.Hotel.Id;
            pVO.Destino = pBO.Destino.Id;
            pVO.Descricao = pBO.Descricao;
            pVO.DataInicio = pBO.DataInicio;
            pVO.DataFim = pBO.DataFim;

            return (iPacoteDados.Atualiza(pVO) == 1);

        }

        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool remover(PacoteBO pBO)
        {

            return (iPacoteDados.Remove(pBO.Id) == 1);

        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public PacoteBO consultar(int id)
        {
            PacoteVO pVO = iPacoteDados.Consulta(id);
            PacoteBO pBO = new PacoteBO();
            pBO.Nome = pVO.Nome;
            pBO.Id = pVO.Id;
            pBO.Parcelamento = pVO.Parcelamento;
            pBO.Preco = pVO.Preco;
            HotelBOMetodos hBO = new HotelBOMetodos();
            pBO.Hotel = hBO.Consultar(pVO.Hotel);
            DestinoBOMetodos dBO = new DestinoBOMetodos();
            pBO.Destino = new DestinoBO();
            pBO.Destino.Id = pVO.Destino;
            pBO.Descricao = pVO.Descricao;
            pBO.DataInicio = pVO.DataInicio;
            pBO.DataFim = pVO.DataFim;
            return pBO;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public List<PacoteBO> consultarTodos()
        {
            List<PacoteBO> iPacoteBO = new List<PacoteBO>();
            List<PacoteVO> iPacoteVO = (new PacoteSQLServer()).ConsultaTodos();
            foreach (PacoteVO pVO in iPacoteVO)
            {
                PacoteBO pBO = new PacoteBO();
                pBO.Nome = pVO.Nome;
                pBO.Parcelamento = pVO.Parcelamento;
                HotelBOMetodos hBO = new HotelBOMetodos();
                pBO.Hotel = hBO.Consultar(pVO.Hotel);
                DestinoBOMetodos dBO = new DestinoBOMetodos();
                pBO.Destino = new DestinoBO();
                pBO.Destino.Id = pVO.Destino;
                pBO.Preco = pVO.Preco;
                pBO.Descricao = pVO.Descricao;
                pBO.DataInicio = pVO.DataInicio;
                pBO.DataFim = pVO.DataFim;
                pBO.Id = pVO.Id;
                iPacoteBO.Add(pBO);

            }
            return iPacoteBO;
        }

    }
}
